iT邦幫忙

2022 iThome 鐵人賽

0
自我挑戰組

冒牌工程師上學去系列 第 40

2-17 虛擬記憶體

  • 分享至 

  • xImage
  •  

當 program size > physical memory size, 為了讓程式能執行, 有以下兩種解決方法:

  1. Dynamic Loading 動態載入-當副程式被呼叫的時候才載入,常見方法是overlay,就是讓新載入的程式蓋掉不用的程式
  2. Virtual Memory
    今天會針對Virtual Memory的部分來聊聊

定義

會在disk挪出一塊空間作為swap space(virtual memory),允許swap in / out(2-9有提到過),要執行的程式才會載入Memory

這篇講很好

執行方式- 需求分頁 Demand Paging

概念像上一章講的分頁式記憶體,不同的地方在於page table多一個欄位V/I bit標示Valid/Invalid,表示這個frame有沒有在memory,當對應到I(Invalid),就表示這一頁是存在disk中,這種情況又稱為page fault
https://ithelp.ithome.com.tw/upload/images/20221112/20141684IZym3oDj03.png

Page fault處理

  • 步驟
    1. 發出page fault interrupt
    2. 找一個暫時不用的frame(free frame)
    3. 將所需的page從disk swap in
    4. 更新page table
      以上所需花費的時間稱為PFPT(page fault processing time)

Virtual Memory效能評估

公式如下
(1 - P) x ma + P x PFPT

* P: page fault ratio(發生page fault機率)
* ma: memory access time
* PFPT: page fault processing time

解釋一下上面公式在幹嘛
(1 - P) x ma表示我沒有發生 page fault 情況下我記憶體存取的時間
P x PFPT表示如果發生page fault我需要花的時間

其中因為PFPT有牽涉到disk,因此其時間必定會比ma長

影響Page fault發生因素

  1. 和Page Replacement algorithm 頁面置換演算法有關(下一章談)
  2. frame數量 - frame數越多,表示一次可以載入的page數量較多,未來發生Page fault機率下降
  3. page大小 - 一個page size越小,切割出的page數量就會越多,因此page table就會越大,這樣會較容易發生Page fault,但可以減少內部碎裂的問題

分類會依照第一篇介紹的分類架構來進行
由於是將學習過程記錄下來,如果有任何錯誤歡迎糾正

以下參考連結在學習過程中覺得非常有幫助:
-Chapter3-作業系統-虛擬記憶體
-作業系統祕笈(張逸)


上一篇
2-16 分頁式記憶體管理Paged Memory Management
下一篇
2-18 Page Replacement algorithm 頁面置換演算法
系列文
冒牌工程師上學去42
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言